package ent

import (
	"elegantGo/chapter17/oo"
)

func (entUser *User) Mapper() oo.User {
	if entUser == nil {
		return nil
	}

	ooUser := oo.NewUser(entUser.Category)
	ooUser.SetID(entUser.ID)
	ooUser.SetPhone(entUser.Phone)
	ooUser.SetNickname(entUser.Nickname)
	ooUser.SetLevel(entUser.Level)

	if vipUser, ok := ooUser.(oo.VipUser); ok {
		vipUser.SetVipStartTime(entUser.VipStartTime)
		vipUser.SetVipEndTime(entUser.VipEndTime)
		vipUser.SetVipResourceDownloadTimes(entUser.VipResourceDownloadTimes)
	}

	return ooUser
}

func (entUsers Users) Mapper() oo.Users {
	size := len(entUsers)
	ooUsers := make(oo.Users, size)
	for i := 0; i < size; i++ {
		ooUsers[i] = entUsers[i].Mapper()
	}
	return ooUsers
}
